#include <stdlib.h>
#include <stdio.h>
#include  <unistd.h>
#include <pthread.h>

void  * thr_fn1( void *arg)
{
    printf("thread1 returning\n");
    
    return((void *)1);
}
void * thr_fn2( void *arg)
{
    printf("thread2  exiting\n");
    sleep(10);
    pthread_exit((void *)2);
}
int main (int argc, char  **argv)
{
    int err ;
    pthread_t  tid1,tid2;
    void *tret;

    err = pthread_create(&tid1,NULL,thr_fn1,NULL);
    if (err !=0)
        perror("can not create thread1\n");
    err = pthread_create(&tid2,NULL,thr_fn2,NULL);
    if (err !=0 )
        perror("can not cteate thread2\n");
    //等待线程1结束，注意pthread_join 会使得进程进入阻塞状态，即会一直等待线程1退出。
    err = pthread_join(tid1,&tret);
    if (err != 0 )
        perror("can not joint with thread1 \n");

    printf("thread1 exit code %ld \n",(long)tret);

        err = pthread_join(tid2,&tret);
    if (err != 0 )
        perror("can not joint with thread2 \n");

    printf("thread2 exit code %ld \n",(long)tret);
}